package com.ruoyi.basebill.service.impl.billIssue;

import com.ruoyi.basebill.domain.*;
import com.ruoyi.basebill.mapper.TWfzRemunerationMapper;
import com.ruoyi.basebill.service.billIssue.ISbjrService;
import com.ruoyi.basebill.service.exception.DataNullException;
import com.ruoyi.basebill.service.impl.WfzSbjrServiceImpl;
import com.ruoyi.basebill.service.impl.WfzSbsjsServiceImpl;
import com.ruoyi.basebill.service.impl.billIssue.util.BillIssueUtil;
import com.ruoyi.basebill.service.impl.billIssue.util.GzUtil;
import com.ruoyi.basebill.service.impl.billIssue.util.Jsfs;
import com.ruoyi.basebill.service.impl.billIssue.helper.SbclHelper;
import com.ruoyi.basedata.domain.WfzBaseunit;
import com.ruoyi.basedata.domain.WfzPerson;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.pushEnum.BillEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

@Service
public class SbjrService implements ISbjrService {

    //薪酬总表-工资发放服务层
    @Autowired
    private TWfzRemunerationMapper tWfzRemunerationMapper;

    //单据下发工具类
    @Autowired
    private BillIssueUtil billIssueUtil;

    //社保缴纳服务层
    @Autowired
    private WfzSbjrServiceImpl wfzSbjrService;

    //社保实际数服务层
    @Autowired
    private WfzSbsjsServiceImpl wfzSbsjsService;

    @Autowired
    private GzUtil gzUtil;

    @Autowired
    private SbclHelper sbclHelper;

    @Override
    public int billIssue(Long billId,StringBuffer stringBuffer) {
        WfzSbjr wfzSbjr = new WfzSbjr();
        //首先根据传入的单据id，查找对应的数据
        TWfzRemuneration tWfzRemuneration = tWfzRemunerationMapper.selectTWfzRemunerationByFid(billId);
        //获取薪酬总表的单据头信息
        String fcompany = tWfzRemuneration.getFcompany();//组织
        String fperiod = tWfzRemuneration.getFperiod();//薪酬期间
        //获取当前登录的用户
        LoginUser loginUser = SecurityUtils.getLoginUser();
        String username = loginUser.getUsername();

        //总人数就是薪酬总表里所有的人  合并纳税成本中心就是属性是同组织下合并纳税成本中心的人数 关联方就是非同组织和同组织下二级组织属性的
        //总人数
        BigDecimal zrs = BigDecimal.valueOf(tWfzRemuneration.getTWfzRemunerationentryList().size());
        //合并纳税成本中心人数
        int nscbzxrs = 0;
        //关联方人数
        int glf = 0;

        //根据组织和薪酬期间查找对应的社保实际数数据
        WfzSbsjs wfzSbsjs = new WfzSbsjs();
        wfzSbsjs.setFcompany(fcompany);
        wfzSbsjs.setFperiod(fperiod);
        List<WfzSbsjs> sbsjs = wfzSbsjsService.selectWfzSbsjsList(wfzSbsjs);
        //判断是否存在对应数据
        if (sbsjs.size() == 0){
            stringBuffer.append("<br/>"+ "单据"+ billId + "没有找到对应的【社保实际数】单据！");
            return 0;
        }
        //判断查找的社保实际数状态是否为审核
        wfzSbsjs = wfzSbsjsService.selectWfzSbsjsByFid(sbsjs.get(0).getFid());
        if (!wfzSbsjs.getFstate().equals("AUDIT")){
            stringBuffer.append("<br/>"+ "单据"+ billId + "对应的【社保实际数】单据状态不为审核！");
            return 0;
        }
        // 准备一个map，用来存储不同成本中心所对应的分录数据
        HashMap<String, List<TWfzRemunerationentry>> map1 = new HashMap<>();
        //开始遍历薪酬总表的分录信息
        List<TWfzRemunerationentry> tWfzRemunerationentryList = tWfzRemuneration.getTWfzRemunerationentryList();
        for (TWfzRemunerationentry tWfzRemunerationentry : tWfzRemunerationentryList) {
            String fcostnumber = tWfzRemunerationentry.getFcostnumber();
            if (map1.containsKey(fcostnumber)){
                map1.get(fcostnumber).add(tWfzRemunerationentry);
            }else {
                ArrayList<TWfzRemunerationentry> objects = new ArrayList<>();
                objects.add(tWfzRemunerationentry);
                map1.put(fcostnumber,objects);
            }
        }
        //循环结束，对应的数据，根据成本中心进行划分。
        //开始根据离职状态进行整合，以及将社保实际数录入的数据进行整合，得出所有的社保缴纳数据
        //获取对应的社保实际数的分录数据
        List<WfzSbsjsentry> wfzSbsjsentryList = wfzSbsjs.getWfzSbsjsentryList();
        ArrayList<WfzSbjrentry> wfzSbjrentries = new ArrayList<WfzSbjrentry>();

        for (String s : map1.keySet()) {
            //准备一个map，用来存储不同离职状态的数据。
            HashMap<Long, List<TWfzRemunerationentry>> map2 = new HashMap<>();
            List<TWfzRemunerationentry> tWfzRemunerationentries = map1.get(s);
            for (TWfzRemunerationentry tWfzRemunerationentry : tWfzRemunerationentries) {
                Long fislz = tWfzRemunerationentry.getFislz();
                if (map2.containsKey(fislz)){
                    map2.get(fislz).add(tWfzRemunerationentry);
                }else {
                    ArrayList<TWfzRemunerationentry> objects = new ArrayList<>();
                    objects.add(tWfzRemunerationentry);
                    map2.put(fislz,objects);
                }
            }
            //循环结束，离职状态也进行划分
            //获取公用的数据
            TWfzRemunerationentry tWfzRemunerationentry1 = map1.get(s).get(0);
            String gynumber = tWfzRemunerationentry1.getFcostnumber();
            String fcostnumber = billIssueUtil.costNumber(gynumber);//成本中心编码
            String fcostname = tWfzRemunerationentry1.getFcostname();//成本中心名称
            /*成本中心所属财务组织字段数据获取方式待定*/
            String fcostcompany = tWfzRemunerationentry1.getFcostcompany();//成本中心所属财务组织
            String jsfs = billIssueUtil.Jsfs(Jsfs.SB,fcompany, tWfzRemunerationentry1.getFpersonnumber());//组织间结算方式
            String costType = billIssueUtil.costType(gynumber);//成本中心属性
            Long isdysb = billIssueUtil.getIsdysb(gynumber);//是否当月缴纳
            String fvourtype = tWfzRemunerationentry1.getFvourtype();//凭证字

            if ("同组织下合并纳税成本中心".equals(jsfs)){
                nscbzxrs += map1.get(s).size();
            }
            if ("同组织下是二级组织".equals(jsfs) || "非同组织".equals(jsfs)){
                glf += map1.get(s).size();
            }


            //开始循环区分好的薪酬总表-工资发放分录
            for (Long aLong : map2.keySet()) {
                WfzSbjrentry wfzSbjrentry = new WfzSbjrentry();
                //对其中需要进行计算的属性进行初始化
                wfzSbjrentry.setFylbx(new BigDecimal(0));
                wfzSbjrentry.setFyybx(new BigDecimal(0));
                wfzSbjrentry.setFsybx(new BigDecimal(0));
                wfzSbjrentry.setFssbx(new BigDecimal(0));
                wfzSbjrentry.setFgsbx(new BigDecimal(0));
                wfzSbjrentry.setFgryl(new BigDecimal(0));
                wfzSbjrentry.setFgryy(new BigDecimal(0));
                wfzSbjrentry.setFgrsy(new BigDecimal(0));

                for (TWfzRemunerationentry tWfzRemunerationentry : map2.get(aLong)) {
                    wfzSbjrentry.setFylbx(wfzSbjrentry.getFylbx().add(tWfzRemunerationentry.getFylbx()));//养老保险
                    wfzSbjrentry.setFyybx(wfzSbjrentry.getFyybx().add(tWfzRemunerationentry.getFyybx()));//医疗保险
                    wfzSbjrentry.setFsybx(wfzSbjrentry.getFsybx().add(tWfzRemunerationentry.getFsyubx()));//生育保险
                    wfzSbjrentry.setFssbx(wfzSbjrentry.getFssbx().add(tWfzRemunerationentry.getFsybx()));//失业保险
                    wfzSbjrentry.setFgsbx(wfzSbjrentry.getFgsbx().add(tWfzRemunerationentry.getFgsbx()));//工伤保险
                    wfzSbjrentry.setFgryl(wfzSbjrentry.getFgryl().add(tWfzRemunerationentry.getFgryl()));//个人养老
                    wfzSbjrentry.setFgryy(wfzSbjrentry.getFgryy().add(tWfzRemunerationentry.getFgryy()));//个人医疗
                    wfzSbjrentry.setFgrsy(wfzSbjrentry.getFgrsy().add(tWfzRemunerationentry.getFgrsy()));//个人失业
                }
                //对数据进行赋值
                wfzSbjrentry.setFcostnumber(fcostnumber);//成本中心编码
                wfzSbjrentry.setFcostname(fcostname);//成本中心名称
                wfzSbjrentry.setFcostcompany(fcostcompany);//成本中心所属财务组织
                wfzSbjrentry.setFjsfs(jsfs);//组织间结算方式
                wfzSbjrentry.setFcbzxxz(costType);//成本中心属性
                wfzSbjrentry.setFisdy(isdysb);//是否当月缴纳
                wfzSbjrentry.setFvourtype(fvourtype);//凭证字
                Long fislz = map2.get(aLong).get(0).getFislz();
                wfzSbjrentry.setFislz(fislz);//是否离职员工
                //获取对应的成本中心的各项保险差额
                for (WfzSbsjsentry wfzSbsjsentry : wfzSbsjsentryList) {
                    if (wfzSbsjsentry.getFcompanynumber().equals(gynumber)){
                        BigDecimal fylbx = wfzSbsjsentry.getFylbx();
                        wfzSbjrentry.setFylbxce(fylbx);//养老保险差额
                        BigDecimal fyybx = wfzSbsjsentry.getFyybx();
                        wfzSbjrentry.setFyybxce(fyybx);//医疗保险差额
                        BigDecimal fsybx = wfzSbsjsentry.getFsybx();
                        wfzSbjrentry.setFsybxce(fsybx);//生育保险差额
                        BigDecimal fssbx = wfzSbsjsentry.getFssbx();
                        wfzSbjrentry.setFssbxce(fssbx);//失业保险差额
                        BigDecimal fgsbx = wfzSbsjsentry.getFgsbx();
                        wfzSbjrentry.setFgsbxce(fgsbx);//工伤保险差额
                    }
                }
                //将处理好的社保缴纳分录数据加入到分录中
                wfzSbjrentries.add(wfzSbjrentry);

            }

        }

        //开始获取单据头数据
        billIssueUtil.setBillNumber(wfzSbjr);//设置单据编号
        String company = billIssueUtil.costNumber(fcompany);
        wfzSbjr.setFcompany(company);//组织
        wfzSbjr.setFperiod(fperiod);//薪酬期间
        wfzSbjr.setFzrs(zrs);//总人数
        wfzSbjr.setFnscbzxrs(BigDecimal.valueOf(nscbzxrs));//合并纳税成本中心人数
        wfzSbjr.setFglf(BigDecimal.valueOf(glf));//关联方人数
        String vourtype = billIssueUtil.getPzz(fcompany);
        wfzSbjr.setFvourtype(vourtype);//凭证字
        wfzSbjr.setFcreator(username);//制单人
        wfzSbjr.setFcreatetime(new Date());//制单时间
        wfzSbjr.setFlastupdateuser(username);//最后修改人
        wfzSbjr.setFlastupdatetime(new Date());//最后修改时间
        wfzSbjr.setFstate("SAVE");//单据状态
        wfzSbjr.setFsourcebillids(String.valueOf(wfzSbsjs.getFid()));//来源实际数录入id
        wfzSbjr.setFsourcebillid(billId);//来源单id
        wfzSbjr.setFiseas(0l);//是否同步至eas
        wfzSbjr.setWfzSbjrentryList(wfzSbjrentries);//设置社保缴纳分录数据
//
//
//        //开始遍历薪酬总表的分录信息
////        List<TWfzRemunerationentry> tWfzRemunerationentryList = tWfzRemuneration.getTWfzRemunerationentryList();
//        if (tWfzRemunerationentryList != null && tWfzRemunerationentryList.size() >0){
//            for (int i = 0; i < tWfzRemunerationentryList.size(); i++) {
//                TWfzRemunerationentry tWfzRemunerationentry = tWfzRemunerationentryList.get(i);
//                String fcostnumber = tWfzRemunerationentry.getFcostnumber();//成本中心
//                String fcostname = tWfzRemunerationentry.getFcostname();//成本中心名称
//                String fcostcompany = tWfzRemunerationentry.getFcostcompany();//成本中心所属财务组织
//                BigDecimal fylbx = tWfzRemunerationentry.getFylbx();//养老保险
//                BigDecimal fyybx = tWfzRemunerationentry.getFyybx();//医疗保险
//                BigDecimal fsybx = tWfzRemunerationentry.getFsybx();//失业保险
//                BigDecimal fgsbx = tWfzRemunerationentry.getFgsbx();//工伤保险
//                BigDecimal fgryl = tWfzRemunerationentry.getFgryl();//个人养老
//                BigDecimal fgryy = tWfzRemunerationentry.getFgryy();//个人医疗
//                BigDecimal fgrsy = tWfzRemunerationentry.getFgrsy();//个人失业
//
//                String fvourtype = tWfzRemunerationentry.getFvourtype();//凭证字
//                Long fissbdy = tWfzRemunerationentry.getFissbdy();//是否当月发放
//                Long fislz = tWfzRemunerationentry.getFislz();//是否离职
//
//                WfzSbjrentry wfzSbjrentry = new WfzSbjrentry();
//                wfzSbjrentry.setFcostnumber(fcostnumber);//成本中心
//                wfzSbjrentry.setFcostname(fcostname);//成本中心名称
//                wfzSbjrentry.setFcostcompany(fcostcompany);//成本中心所属财务组织
//                wfzSbjrentry.setFylbx(fylbx);//养老保险
//                wfzSbjrentry.setFyybx(fyybx);//医疗保险
//                //缺少数据，生育保险
//                wfzSbjrentry.setFssbx(fsybx);//失业保险
//                wfzSbjrentry.setFgsbx(fgsbx);//工伤保险
//                wfzSbjrentry.setFgryl(fgryl);//个人养老
//                wfzSbjrentry.setFgryy(fgryy);//个人医疗
//                wfzSbjrentry.setFgrsy(fgrsy);//个人失业
//                //缺少数据，养老保险差额
//                //缺少数据，医疗保险差额
//                //缺少数据，生育保险差额
//                //缺少数据，失业保险差额
//                //缺少数据，工伤保险差额
//
//                //获取分录的结算方式
//                String jsfs = billIssueUtil.Jsfs(fcompany, fcostnumber);
//                wfzSbjrentry.setFjsfs(jsfs);//组织间结算方式
//
//                //成本中心属性：
//                String costType = billIssueUtil.costType(fcostnumber);
//                wfzSbjrentry.setFcbzxxz(costType);//成本中心属性
//
//
//                wfzSbjrentry.setFisdy(0l);//是否当月发放
//                wfzSbjrentry.setFislz(fislz);//是否离职
//                wfzSbjrentry.setFvourtype(fvourtype);//凭证字
//
//                wfzSbjrentries.add(wfzSbjrentry);//新增到单据分录
//
//            }
//        }
//        //总人数就是薪酬总表里所有的人  合并纳税成本中心就是属性是同组织下合并纳税成本中心的人数 关联方就是非同组织和同组织下二级组织属性的
//        //总人数
//        BigDecimal zrs = BigDecimal.valueOf(wfzSbjrentries.size());
//        //合并纳税成本中心人数
//        int nscbzxrs = 0;
//        //关联方人数
//        int glf = 0;
//        for (int i = 0; i < wfzSbjrentries.size(); i++) {
//            WfzSbjrentry wfzSbjrentry = wfzSbjrentries.get(i);
//            String fjsfs = wfzSbjrentry.getFjsfs();
//            if ("同组织下合并纳税成本中心".equals(fjsfs)){
//                nscbzxrs++;
//            }
//            if ("同组织下是二级组织".equals(fjsfs) || "非同组织".equals(fjsfs)){
//                glf++;
//            }
//        }
//
//        //开始赋值
//
//        billIssueUtil.setBillNumber(wfzSbjr);
//        wfzSbjr.setFcompany(billIssueUtil.costNumber(fcompany));//组织
//        wfzSbjr.setFperiod(fperiod);//薪酬期间
//        wfzSbjr.setFzrs(zrs);//总人数
//        wfzSbjr.setFnscbzxrs(BigDecimal.valueOf(nscbzxrs));//合并纳税成本中心人数
//        wfzSbjr.setFglf(BigDecimal.valueOf(glf));//关联方人数
//        wfzSbjr.setFcreator(username);//创建者
//        wfzSbjr.setFlastupdateuser(username);//最后修改者
//        wfzSbjr.setFstate("SAVE");//状态
////        wfzSbjr.setFsourcebillid();//来源单ID
//        wfzSbjr.setFiseas(0L);//是否同步至eas
//
//        wfzSbjr.setWfzSbjrentryList(wfzSbjrentries);//设置单据分录



        int i = wfzSbjrService.insertWfzSbjr(wfzSbjr);

        return i;
    }

    public int pushSbjr(TWfzRemuneration tWfzRemuneration ,StringBuffer stringBuffer,WfzSbsjsentry sbsjsentry) throws DataNullException {

        ArrayList<WfzSbjr> wfzSbjrs = new ArrayList<>();
        List<TWfzRemunerationentry> tWfzRemunerationentryList = tWfzRemuneration.getTWfzRemunerationentryList();
        String fperiod = tWfzRemuneration.getFperiod(); //薪酬期间
        String fnumber = tWfzRemuneration.getFnumber();

        //把当月的剔除出来

        for (TWfzRemunerationentry tWfzRemunerationentry : tWfzRemunerationentryList) {
            Long fissbdy = tWfzRemunerationentry.getFissbdy();
            if (fissbdy==1l){
                continue;
            }
            String fcostnumber = tWfzRemunerationentry.getFcostnumber();
            WfzPerson person = gzUtil.getPerson(fcostnumber);
            if (person==null){
                throw new DataNullException("未在系统中找到"+fcostnumber+"的员工数据");
            }
            String fsbffgs = person.getFsbffgs();//社保单位
            String fsscost = person.getFsscost();
            String fcostcompany = person.getFcostcompany();

            WfzBaseunit unit = gzUtil.getUnitByGy(fsbffgs);
            WfzBaseunit unitByGy = gzUtil.getUnitByGy(fsscost);
            WfzBaseunit compamyunitByGy1 = gzUtil.getUnitByGy(fcostcompany);

            if (unit == null) {
                throw new DataNullException("未在系统内找到社保公司" + fsbffgs + "的组织数据");
            }



            fsbffgs = unit.getFnumber(); //eas编码
            String fvouType = unit.getFpzz(); //表头凭证字
            fsscost = unitByGy.getFnumber(); //eas成本中心
            String fcostname = unitByGy.getFname(); //成本中心民称
            fcostcompany = compamyunitByGy1.getFnumber(); //成本中心所属财务组织
            String fcosttype = unitByGy.getFcosttype(); //成本中心属性
            String fpzz = unitByGy.getFpzz(); //凭证字

            String fbanknumber = sbclHelper.getBankNumBycomany(fsbffgs, BillEnum.SB.toString());
            if(StringUtils.isEmpty(fbanknumber)){
                throw new DataNullException("未在系统中找到"+fsbffgs+"的银行数据");
            }

            WfzSbjr wfzSbjrbyUnit = sbclHelper.judIsBill(fsbffgs, wfzSbjrs);//判断是否含有同一张单据,拿到相同组织的工资发放
            if(wfzSbjrbyUnit ==null){
                List<WfzSbjrentry> wfzSbjrentryList = wfzSbjrbyUnit.getWfzSbjrentryList();
                Boolean flag = false;
                for (WfzSbjrentry wfzSbjrentry : wfzSbjrentryList) {
                    Long fislz = wfzSbjrentry.getFislz();//是否离职
                    String fbanknum = wfzSbjrentry.getFbanknum();
                    String fcost = wfzSbjrentry.getFcostnumber();
                    if(fislz ==01){//在职人员
                        //判断成本中心和银行账号是否相等
                        if(fbanknumber.equals(fbanknum)&&fcostnumber.equals(fcost)){ //
                            //融合
                            sbclHelper.mergeJr(tWfzRemunerationentry,sbsjsentry,wfzSbjrentry);
                            String jsfs = billIssueUtil.Jsfs(fsbffgs, fsscost);//组织间结算方式
                            if ("同组织下合并纳税成本中心".equals(jsfs)){
                                wfzSbjrbyUnit.setFnscbzxrs(wfzSbjrbyUnit.getFnscbzxrs().add(BigDecimal.ONE));
                            }
                            if ("同组织下是二级组织".equals(jsfs) || "非同组织".equals(jsfs)){
                                wfzSbjrbyUnit.setFglf(wfzSbjrbyUnit.getFglf().add(BigDecimal.ONE));
                            }
                            wfzSbjrbyUnit.setFzrs(wfzSbjrbyUnit.getFzrs().add(BigDecimal.ONE)); //总人数
                            flag = true;
                            break;
                        }

                    }else{ //离职人员判断逻辑
                        if(fbanknumber.equals(fbanknum)&&fcostnumber.equals(fcost)){ //
                            //融合
                            sbclHelper.mergeJr(tWfzRemunerationentry,sbsjsentry,wfzSbjrentry);
                            String jsfs = billIssueUtil.Jsfs(fsbffgs, fsscost);//组织间结算方式
                            if ("同组织下合并纳税成本中心".equals(jsfs)){
                                wfzSbjrbyUnit.setFnscbzxrs(wfzSbjrbyUnit.getFnscbzxrs().add(BigDecimal.ONE));
                            }
                            if ("同组织下是二级组织".equals(jsfs) || "非同组织".equals(jsfs)){
                                wfzSbjrbyUnit.setFglf(wfzSbjrbyUnit.getFglf().add(BigDecimal.ONE));
                            }
                            wfzSbjrbyUnit.setFzrs(wfzSbjrbyUnit.getFzrs().add(BigDecimal.ONE)); //总人数
                            flag = true;
                            break;
                        }
                    }

                }
                if (flag){
                    continue;
                }
                //循环完未找到可以融合的分录，新增一条分录
                String jsfs = billIssueUtil.Jsfs(fsbffgs, fsscost);//组织间结算方式
                //如果不存在新建一个工资发放队
                //拼接分录
                WfzSbjrentry wfzSbjrentry = new WfzSbjrentry(); //
                sbclHelper.addSbjrEntry(tWfzRemunerationentry,wfzSbjrentry,sbsjsentry,fsbffgs,fsscost,fcostname,fcostcompany,fcosttype,fpzz,fbanknumber);
                if ("同组织下合并纳税成本中心".equals(jsfs)){
                    wfzSbjrbyUnit.setFnscbzxrs(wfzSbjrbyUnit.getFnscbzxrs().add(BigDecimal.ONE));
                }
                if ("同组织下是二级组织".equals(jsfs) || "非同组织".equals(jsfs)){
                    wfzSbjrbyUnit.setFglf(wfzSbjrbyUnit.getFglf().add(BigDecimal.ONE));
                }
                wfzSbjrbyUnit.getWfzSbjrentryList().add(wfzSbjrentry);
                int size = wfzSbjrbyUnit.getWfzSbjrentryList().size();
                wfzSbjrbyUnit.setFzrs(BigDecimal.valueOf(size)); //总人数
            }else{
                //新增一张单据
                String jsfs = billIssueUtil.Jsfs(fsbffgs, fsscost);//组织间结算方式
                //如果不存在新建一个工资发放队
                WfzSbjr wfzSbjr = new WfzSbjr();
                billIssueUtil.setBillNumber(wfzSbjr);
                wfzSbjr.setFperiod(tWfzRemuneration.getFperiod());
                wfzSbjr.setFzrs(BigDecimal.ONE);
                if ("同组织下合并纳税成本中心".equals(jsfs)){
                    wfzSbjr.setFnscbzxrs(BigDecimal.ONE);
                }
                if ("同组织下是二级组织".equals(jsfs) || "非同组织".equals(jsfs)){
                    wfzSbjr.setFglf(BigDecimal.ONE);
                }

               wfzSbjr.setFvourtype(fvouType); //凭证字
               wfzSbjr.setFcreator("admin");
               wfzSbjr.setFcreatetime(new Date());
               wfzSbjr.setFcompany(fsbffgs);
               wfzSbjr.setFsourcebillid(Long.valueOf(tWfzRemuneration.getFid().toString()));
               wfzSbjr.setFstate("AUDIT");
                WfzSbjrentry wfzSbjrentry = new WfzSbjrentry(); //
                ArrayList<WfzSbjrentry> wfzSbjrentries = new ArrayList<>();
                //拼接分录
                sbclHelper.addSbjrEntry(tWfzRemunerationentry,wfzSbjrentry,sbsjsentry,fsbffgs,fsscost,fcostname,fcostcompany,fcosttype,fpzz,fbanknumber);
                wfzSbjrentries.add(wfzSbjrentry);
                //根据
                wfzSbjr.setWfzSbjrentryList(wfzSbjrentries);

                wfzSbjrs.add(wfzSbjr);
            }
        }


        return 1;
    }
}
